const errorTypes = require('../constants/error-types');
const service = require('../service/user.service');
const md5Password = require('../utils/password-handle');


const verifyLogin = async (ctx, next) => {
    // 1、先拿到用户名和密码
    let { name, password } = ctx.request.body;

    // 2、判断用户名或者密码不能为空
    if (!name || !password) {
        const error = new Error(errorTypes.NAME_OR_PASSWORD_IS_REQUIRED);
        //发射一个错误信息
        return ctx.app.emit('error', error, ctx);
    }

    // 3、判断用户名是否存在
    let [ user ] = await service.getUserByName(name);//数据库查询的结果 是一个数组
    if (!user) {
        //没有这个用户
        const error = new Error(errorTypes.USER_DOES_NOT_EXIST);
        return ctx.app.emit('error', error, ctx);
    }

    // 4、有这个用户，在判断用户的密码是否一致
    password = md5Password(password);
    if (password != user.password) {
        //密码错误
        const error = new Error(errorTypes.PASSWORD_WRONG);
        return ctx.app.emit('error', error, ctx);
    }

    await next();
}

module.exports = {
    verifyLogin
};